home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / comm / comm5 / nwsbrkr5.lha / Reader / NewsBreaker / src / dbg / ShowUMSField.c < prev   
Text File  |  1996-12-14  |  5KB  |  189 lines

  1. /* Routinen geklaut/abgeändert aus ShowUMSFields von Chr. Rüttgers (?) */
  2.  
  3. void
  4. ShowUMSField (UMSUserAccount account, UMSMsgNum MsgNum)
  5. {
  6.   LONG HeaderLength;        /* evtl. auch MessageInfo-Struktur aus ums.h ? */
  7.   LONG TextLength;
  8.   LONG Date;
  9.   UMSMsgNum ChainUp;
  10.   UMSMsgNum ChainDn;
  11.   UMSMsgNum ChainLt;
  12.   UMSMsgNum ChainRt;
  13.   UMSSet GlobalStatus;
  14.   UMSSet UserStatus;
  15.   UMSSet LoginStatus;
  16.   UMSMsgNum HardLink;
  17.   UMSMsgNum SoftLink;
  18.   LONG CDate;
  19.  
  20.   UMSMsgTextFields MsgArray;
  21.  
  22.   ULONG result = 0;
  23.   int loop = 0, fi = 0;
  24.   char buffer[256];
  25.  
  26.   if (MsgNum)
  27.     {
  28.       if (!UMSReadMsgTags (account,
  29.                UMSTAG_RMsgNum, MsgNum,
  30.                UMSTAG_RNoUpdate, 1,
  31.                UMSTAG_RTextFields, MsgArray,
  32.                UMSTAG_RHeaderLength, &HeaderLength,
  33.                UMSTAG_RTextLength, &TextLength,
  34.                UMSTAG_RMsgDate, &Date,
  35.                UMSTAG_RChainUp, &ChainUp,
  36.                UMSTAG_RChainDn, &ChainDn,
  37.                UMSTAG_RChainLt, &ChainLt,
  38.                UMSTAG_RChainRt, &ChainRt,
  39.                UMSTAG_RGlobalFlags, &GlobalStatus,
  40.                UMSTAG_RUserFlags, &UserStatus,
  41.                UMSTAG_RLoginFlags, &LoginStatus,
  42.                UMSTAG_RHardLink, &HardLink,
  43.                UMSTAG_RSoftLink, &SoftLink,
  44.                UMSTAG_RMsgCDate, &CDate,
  45.                UMSTAG_RReadAll, NULL,
  46.                TAG_DONE))
  47.     printf ("Kann Msg Nr. :%lu nicht lesen, UMS-Error: %s\n", MsgNum, UMSErrTxt (account));
  48.       else
  49.     /* Message korrekt eingelesen, Buffer sind gültig: */
  50.     {
  51.       printf ("Message %ld\n", MsgNum);
  52.  
  53.       for (loop = 1; loop <= 40; loop++)
  54.         {
  55.           if (MsgArray[loop])
  56.         printf ("%20.20s: %.60s\n", ums_field[loop], MsgArray[loop]);
  57.         }
  58.       if (MsgArray[127])
  59.         printf ("TempFileName:        %s\n", MsgArray[127]);
  60.  
  61.       /* nun die numerischen Felder/Flags */
  62.       if (HeaderLength)
  63.         printf (" HeaderLength: %lu byte\n", HeaderLength);
  64.       if (TextLength)
  65.         printf ("   TextLength: %lu byte\n", TextLength);
  66.       if (Date)
  67.         printf ("         Date: %s\n", UMS2AmigaDate (Date, buffer));
  68.       if (CDate)
  69.         printf ("        CDate: %s\n", UMS2AmigaDate (CDate, buffer));
  70.       if (ChainUp)
  71.         printf ("      ChainUp: %lu\n", ChainUp);
  72.       if (ChainDn)
  73.         printf ("      ChainDn: %lu\n", ChainDn);
  74.       if (ChainLt)
  75.         printf ("      ChainLt: %lu\n", ChainLt);
  76.       if (ChainRt)
  77.         printf ("      ChainRt: %lu\n", ChainRt);
  78.       if (HardLink)
  79.         printf ("     HardLink: %lu\n", HardLink);
  80.       if (SoftLink)
  81.         printf ("     SoftLink: %lu\n", SoftLink);
  82.       if (GlobalStatus)
  83.         printf (" GlobalStatus: %s\n", ParseGlobalFlags (GlobalStatus, buffer));
  84.       if (UserStatus)
  85.         printf ("   UserStatus: %s\n", ParseUserFlags (UserStatus, buffer));
  86.       if (LoginStatus)
  87.         printf ("  LoginStatus: %s\n", ParseLocalFlags (LoginStatus, buffer));
  88.  
  89.       /* Buffer freigeben */
  90.       UMSFreeMsg (account, MsgNum);
  91.     }            /* else */
  92.     }                /* if MsgNum */
  93.  
  94. }                /* main */
  95.  
  96. /* ------------------------------------------------------------------------ */
  97.  
  98. char *
  99. UMS2AmigaDate (ULONG RecTime, char *buffer)
  100. {
  101.   struct ClockData *clockdata;
  102.  
  103.   strcpy (buffer, "-");
  104.   if (clockdata = AllocMem (sizeof (struct ClockData), MEMF_CLEAR))
  105.     {
  106.       Amiga2Date (RecTime, clockdata);
  107.       sprintf (buffer, "%02ld:%02ld %02ld.%02ld.%ld",
  108.            clockdata->hour, clockdata->min, clockdata->mday, clockdata->month, clockdata->year);
  109.       FreeMem (clockdata, sizeof (struct ClockData));
  110.     }
  111.   return (buffer);
  112. }
  113.  
  114. /* ------------------------------------------------------------------------ */
  115.  
  116. char *
  117. ParseGlobalFlags (ULONG flags, char *buffer)
  118. {
  119.   strcpy (buffer, '\0');
  120.   if (flags & UMSGSTATF_Deleted)
  121.     strcat (buffer, "Deleted ");
  122.   if (flags & UMSGSTATF_Expired)
  123.     strcat (buffer, "Expired ");
  124.   if (flags & UMSGSTATF_Exported)
  125.     strcat (buffer, "Exported ");
  126.   if (flags & UMSGSTATF_Orphan)
  127.     strcat (buffer, "Orphan ");
  128.   if (flags & UMSGSTATF_Link)
  129.     strcat (buffer, "Link ");
  130.   if (flags & UMSGSTATF_HardLink)
  131.     strcat (buffer, "Hardlink ");
  132.   if (flags & UMSGSTATF_Parked)
  133.     strcat (buffer, "Parked ");
  134.   if (flags & UMSGSTATF_HasFile)
  135.     strcat (buffer, "HasFile ");
  136.   return (buffer);
  137. }
  138.  
  139. /* ------------------------------------------------------------------------ */
  140.  
  141. char *
  142. ParseUserFlags (ULONG flags, char *buffer)
  143. {
  144.   strcpy (buffer, '\0');
  145.   if (flags & UMSUSTATF_Archive)
  146.     strcat (buffer, "Archive ");
  147.   if (flags & UMSUSTATF_Junk)
  148.     strcat (buffer, "Junk ");
  149.   if (flags & UMSUSTATF_PostPoned)
  150.     strcat (buffer, "PostPoned ");
  151.   if (flags & UMSUSTATF_Selected)
  152.     strcat (buffer, "Selected ");
  153.   if (flags & UMSUSTATF_Filtered)
  154.     strcat (buffer, "Filtered ");
  155.   if (flags & UMSUSTATF_Old)
  156.     strcat (buffer, "Old ");
  157.   if (flags & UMSUSTATF_WriteAccess)
  158.     strcat (buffer, "WriteAccess ");
  159.   if (flags & UMSUSTATF_ReadAccess)
  160.     strcat (buffer, "ReadAccess ");
  161.   if (flags & UMSUSTATF_ViewAccess)
  162.     strcat (buffer, "ViewAccess ");
  163.   if (flags & UMSUSTATF_Owner)
  164.     strcat (buffer, "Owner ");
  165.   return (buffer);
  166. }
  167.  
  168. /* ------------------------------------------------------------------------ */
  169.  
  170. char *
  171. ParseLocalFlags (ULONG flags, char *buffer)
  172. {
  173.   int i = 0;
  174.   char intbuf[30];
  175.  
  176.   strcpy (buffer, '\0');
  177.  
  178.   /* nur untere 16 Bits sind verfügbar */
  179.   for (i = 0; i <= 15; i++)
  180.     {
  181.       if (flags & (1L << i))
  182.     {
  183.       sprintf (intbuf, "Bit%ld ", i);
  184.       strcat (buffer, intbuf);
  185.     }
  186.     }
  187.   return (buffer);
  188. }
  189.